perm filename TESTB.SAI[1,JMC] blob
sn#005234 filedate 1969-12-12 generic text, type T, neo UTF8
00100 COMMENT
00200 "PROGRAM TO FIND INTEGERS EXPRESSABLE AS SUMS OF CUBES
00300 IN TWO DIFFERENT WAYS AND TO LEARN TO USE SAIL";
00400
00500 BEGIN INTEGER n, lim;
00600 COMMENT
00700 "Ask for n, the number up to which cubes are to be taken
00800 and for lim, the size of array to be used for storing
00900 the numbers found.";
01000 outstr("n = "); n ← cvd(inchwl);
01100 outstr("lim = "); lim ← cvd(inchwl);
01200 BEGIN INTEGER ARRAY a[1:lim],b[1:lim],c[1:lim],d[1:lim];
01300 INTEGER m,i,j,k,l,i1,i2,i3,j1,j2,j3,k1,k2,k3; real w; LABEL r; BOOLEAN p;
01400 integer procedure gcd(integer i, j);
01500 begin integer t; label a;
01600 if i>j then i ↔ j;
01700 a:
01800 if i=0 then return(j);
01900 t←j mod i; j←i; i←t;
02000 go to a end;
02100 m ← 0;
02200 i1←0; i2←i3←1;
02300 for i←1 step 1 until n do begin
02400 j1←0; j2←1; j3←i3+1;
02500 for j←1 step 1 until i do begin
02600 k1←j1+6; k2←j2+k1; k3←i3-k2;
02700 for k←j+1 step 1 while k<i and k3>0 do begin
02750 w←k3;
02800 l←w←w↑0.3333334;if l<k then done;
02900 if w-l < 0.001 and k3=l↑3 and gcd(i,gcd(j,gcd(k,l)))=1 then
03000 BEGIN m←m+1;a[m] ← i; b[m] ← j; c[m] ← k; d[m] ← l ;
03050 outstr(cvs(i)&" "&cvs(i3)&" "&cvs(j)&" "&
03060 cvs(j3)&" "&cvs(k)&" "&cvs(k3)&" "&cvs(l)&
03070 " "&cvf(w)) end;
03100 k1←k1+6;k2←k2+k1;k3←k3-k2 end;
03200 j1←j1+6;j2←j2+j1;j3←j3+j2 end;
03300 i1←i1+6;i2←i2+i1;i3←i3+i2 end;
03400 r:
03500 p ← FALSE;
03600 FOR i←1 STEP 1 UNTIL m-1 DO
03700 IF a[i]↑3+b[i]↑3 > a[i+1]↑3+b[i+1]↑3 THEN
03800 BEGIN a[i] ↔ a[i+1]; b[i] ↔ b[i+1]; c[i] ↔ c[i+1];
03900 d[i] ↔ d[i+1]; p ← TRUE END;
04000 IF p THEN GO TO r;
04100
04200 COMMENT
04300 "Print the pairs found.";
04400 FOR i←1 STEP 1 UNTIL m DO
04500 OUTSTR(CVS(a[i]↑3+b[i]↑3)&" = "&CVS(a[i])&
04600 "↑3 + "&CVS(b[i])&"↑3 = "&CVS(c[i])&"↑3 + "&
04700 CVS(d[i])&"↑3
04800 ")
04900 END
05000 END;